home *** CD-ROM | disk | FTP | other *** search
- % Evaltrace font, based on the Computer Modern family.
- % See "Visualizing Evaluation in Applicative Languages",
- % by David S. Touretzky and Peter Lee
- % Copyright 1989 by Peter Lee and David S. Touretzky
- % School of Computer Science
- % Carnegie Mellon University
- %
- % Disclaimer: This font was hackedup by someone who doesn't know anything
- % about font creation or Metafont.
- %
- % Please send improvements and bug fixes to:
- % Peter.Lee@cs.cmu.edu or David.Touretzky@cs.cmu.edu
-
- mode_setup; font_setup;
-
- autorounding:=1;
- define_pixels(thick_rule_thickness,xarrowhead,yarrowhead,vmeet_adj,hmeet_adj);
-
- def beginevt(expr code) =
- beginchar(code, 18u#, body_height#, desc_depth#);
- enddef;
-
- def draw_thin_hrule =
- adjust_fit(0,0); pickup rule.nib;
- x1=0-hmeet_adj; x2=w+hmeet_adj;
- y1=y2=good.y math_axis;
- draw z1--z2;
- enddef;
-
- def draw_dashed_hrule =
- adjust_fit(0,0); pickup rule.nib;
- y1=y2=y3=y4=math_axis;
- numeric t; t=w/4+hmeet_adj;
- x1=0; x2=t; x3=2t; x4=3t;
- drawdot z1; drawdot z2; drawdot z3; drawdot z4;
- enddef;
-
- %%%%%%%%%%%%%%%%%%
- % Vertical rules %
- %%%%%%%%%%%%%%%%%%
-
- cmchar "Thin vertical rule";
- beginevt("|");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=good.x .5w; y1=h+vmeet_adj; y2=-d-vmeet_adj;
- draw z1--z2;
- labels(1,2); endchar;
-
- cmchar "Thick vertical rule";
- beginevt("*");
- adjust_fit(0,0); pickup fine.nib;
- lft x1=lft x4=.5w-thick_rule_thickness;
- rt x2=rt x3=.5w+thick_rule_thickness;
- y1=y2=h+vmeet_adj; y3=y4=-d-vmeet_adj;
- filldraw z1--z2--z3--z4--cycle;
- labels(1,2,3,4); endchar;
-
- cmchar "Hollow vertical rule";
- beginevt("%");
- adjust_fit(0,0); pickup crisp.nib;
- lft x1=lft x4=(good.x .5w) - thick_rule_thickness;
- rt x2=rt x3=(good.x .5w) + thick_rule_thickness;
- y1=y2=h+vmeet_adj; y3=y4=-d-vmeet_adj;
- draw z1--z4; draw z2--z3;
- labels(1,2,3,4); endchar;
-
- cmchar "Dashed vertical rule";
- beginevt(":");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=x3=x4=x5=x6=x7=good.x .5w;
- numeric t; t=(h+d+2vmeet_adj)/7;
- numeric b; b=-d-vmeet_adj;
- y1=b; y2=b+t; y3=b+2t; y4=b+3t; y5=b+4t; y6=b+5t; y7=b+6t;
- drawdot z1; drawdot z2; drawdot z3; drawdot z4;
- drawdot z5; drawdot z6; drawdot z7;
- labels(1,2,3,4,5,6,7); endchar;
-
- cmchar "Hollow vertical rule meeting thin";
- beginevt("/");
- adjust_fit(0,0); pickup crisp.nib;
- lft x1=lft x4=(good.x .5w) - thick_rule_thickness - crisp;
- x5=(good.x .5w) - thick_rule_thickness - crisp;
- rt x2=rt x3=(good.x .5w) + thick_rule_thickness - crisp;
- y1=y2=h+vmeet_adj; y3=y4=-d-vmeet_adj;
- draw z1--z4; draw z2--z3;
- pickup rule.nib;
- y5=y6=math_axis; x6=0-hmeet_adj;
- draw z5--z6;
- labels(1,2,3,4,5,6); endchar;
-
- cmchar "Hollow vertical rule meeting dashed";
- beginevt("?");
- adjust_fit(0,0); pickup crisp.nib;
- lft x1=lft x4=(good.x .5w) - thick_rule_thickness - crisp;
- rt x2=rt x3=(good.x .5w) + thick_rule_thickness - crisp;
- y1=y2=h+vmeet_adj; y3=y4=-d-vmeet_adj;
- draw z1--z4; draw z2--z3;
- pickup rule.nib;
- y5=y6=math_axis;
- numeric t; t=w/4+hmeet_adj;
- x5=0; x6=t;
- drawdot z5; drawdot z6;
- labels(1,2,3,4,5,6); endchar;
-
- cmchar "Thin vertical rule meeting dashed";
- beginevt("'");
- adjust_fit(0,0); pickup rule.nib;
- y4=y5=y6=math_axis;
- numeric t; t=w/4+hmeet_adj;
- x4=0; x5=t;
- drawdot z4; drawdot z5;
- x1=x2=(good.x .5w) - crisp; y1=h+vmeet_adj; y2=-d-vmeet_adj;
- draw z1--z2;
- labels(1,2,4,5); endchar;
-
- %%%%%%%%%%%%%%%%%%%%
- % Horizontal rules %
- %%%%%%%%%%%%%%%%%%%%
-
- cmchar "Thin horizontal rule";
- beginevt("-");
- draw_thin_hrule;
- labels(1,2); endchar;
-
- cmchar "Thick horizontal rule";
- beginevt("_");
- adjust_fit(0,0); pickup fine.nib;
- x1=x4=0-hmeet_adj; x2=x3=w+hmeet_adj;
- top y1=top y2=math_axis+thick_rule_thickness;
- bot y3=bot y4=math_axis-thick_rule_thickness;
- filldraw z1--z2--z3--z4--cycle;
- labels(1,2,3,4); endchar;
-
- cmchar "Hollow horizontal rule";
- beginevt("=");
- adjust_fit(0,0); pickup crisp.nib;
- x1=x4=0-hmeet_adj; x2=x3=w+hmeet_adj;
- top y1=top y2=math_axis + thick_rule_thickness;
- bot y3=bot y4=math_axis - thick_rule_thickness;
- draw z1--z2; draw z3--z4;
- labels(1,2,3,4); endchar;
-
- cmchar "Dashed horizontal rule";
- beginevt(".");
- draw_dashed_hrule;
- labels(1,2,3,4); endchar;
-
- %%%%%%%%%%%%%%%%%
- % Crossed lines %
- %%%%%%%%%%%%%%%%%
-
- cmchar "Crossed thin rule";
- beginevt("+");
- draw_thin_hrule;
- x3=x4=x5=x6=good.x .5w;
- y3=h+vmeet_adj; bot y4=math_axis + thick_rule_thickness;
- y6=-d-vmeet_adj; top y5=math_axis - thick_rule_thickness;
- draw z3--z4; draw z5--z6;
- labels(1,2,3,4,5,6); endchar;
-
- cmchar "Crossed thick rule";
- beginevt("#");
- draw_thin_hrule;
- lft x3=lft x6=lft x7=lft x10=.5w-thick_rule_thickness;
- rt x4=rt x5=rt x8=rt x9=.5w+thick_rule_thickness;
- y3=y4=h+vmeet_adj;
- bot y5=bot y6=math_axis+thick_rule_thickness;
- y9=y10=-d-vmeet_adj;
- top y7=top y8=math_axis-thick_rule_thickness;
- filldraw z3--z4--z5--z6--cycle;
- filldraw z7--z8--z9--z10--cycle;
- labels(1,2,3,4,5,6,7,8,9,10); endchar;
-
- cmchar "Crossed hollow rule";
- beginevt("H");
- draw_thin_hrule;
- pickup crisp.nib;
- lft x3=lft x6=lft x7=lft x10=(good.x .5w) - thick_rule_thickness;
- rt x4=rt x5=rt x8=rt x9=(good.x .5w) + thick_rule_thickness;
- y3=y4=h+vmeet_adj; bot y5=bot y6=math_axis + thick_rule_thickness;
- y9=y10=-d-vmeet_adj; top y7=top y8=math_axis - thick_rule_thickness;
- draw z3--z6; draw z4--z5;
- draw z7--z10; draw z8--z9;
- labels(1,2,3,4,5,6,7,8,9,10); endchar;
-
- cmchar "Crossed dashed rule";
- beginevt("h");
- draw_thin_hrule;
- x3=x4=x5=x6=x7=x8=x9=good.x .5w;
- numeric t; t=(h+d+2vmeet_adj)/7;
- numeric b; b=-d-vmeet_adj;
- y3=b; y4=b+t; y5=b+2t; y6=b+3t; y7=b+4t; y8=b+5t; y9=b+6t;
- drawdot z3; drawdot z4; drawdot z5; drawdot z6;
- drawdot z7; drawdot z8; drawdot z9;
- labels(1,2,3,4,5,6,7,8,9); endchar;
-
- cmchar "Dash-crossed thin rule";
- beginevt("x");
- draw_dashed_hrule;
- x7=x8=x9=x10=good.x .5w;
- y7=h+vmeet_adj; bot y8=math_axis + thick_rule_thickness;
- y10=-d-vmeet_adj; top y9=math_axis - thick_rule_thickness;
- draw z7--z8; draw z9--z10;
- labels(1,2,3,4,7,8,9,10); endchar;
-
- cmchar "Dash-crossed thick rule";
- beginevt("X");
- draw_dashed_hrule;
- pickup fine.nib;
- lft x7=lft x10=lft x11=lft x14=(good.x .5w) - thick_rule_thickness;
- rt x8=rt x9=rt x12=rt x13=(good.x .5w) + thick_rule_thickness;
- y7=y8=h+vmeet_adj; bot y9=bot y10=math_axis + thick_rule_thickness;
- y13=y14=-d-vmeet_adj; top y11=top y12=math_axis - thick_rule_thickness;
- filldraw z7--z8--z9--z10--cycle;
- filldraw z11--z12--z13--z14--cycle;
- labels(1,2,3,4,7,8,9,10,11,12,13,14); endchar;
-
- cmchar "Dash-crossed hollow rule";
- beginevt("Y");
- draw_dashed_hrule;
- pickup crisp.nib;
- lft x7=lft x10=lft x11=lft x14=(good.x .5w) - thick_rule_thickness;
- rt x8=rt x9=rt x12=rt x13=(good.x .5w) + thick_rule_thickness;
- y7=y8=h+vmeet_adj; bot y9=bot y10=math_axis + thick_rule_thickness;
- y13=y14=-d-vmeet_adj; top y11=top y12=math_axis - thick_rule_thickness;
- draw z7--z10; draw z8--z9;
- draw z11--z14; draw z12--z13;
- labels(1,2,3,4,7,8,9,10,11,12,13,14); endchar;
-
- cmchar "Dash-crossed dashed rule";
- beginevt("y");
- draw_dashed_hrule;
- x5=x6=x7=x8=x9=x10=x11=x12=good.x .5w;
- numeric t; t=(h+d+2vmeet_adj)/8;
- numeric b; b=-d-vmeet_adj;
- y5=b; y6=b+t; y7=b+2t; y8=b+3t; y9=b+4t; y10=b+5t; y11=b+6t; y12=b+7t;
- drawdot z5; drawdot z6; drawdot z7; drawdot z8;
- drawdot z9; drawdot z10; drawdot z11; drawdot z12;
- labels(1,2,3,4,5,6,7,8,9,10,11,12); endchar;
- %enddef;
-
- %%%%%%%%%%
- % Arrows %
- %%%%%%%%%%
-
- cmchar "Thin rightward arrow";
- beginevt(">");
- adjust_fit(0,0); pickup rule.nib;
- x1=0-hmeet_adj; rt x2=x3=w-thick_rule_thickness;
- y1=y2=y3=math_axis;
- draw z1--z2; % stem
- pickup crisp.nib;
- z4=z3+(-xarrowhead,yarrowhead);
- z5=z3+(-xarrowhead,-yarrowhead);
- draw z3--z4; draw z3--z5; % arrowhead
- labels(1,2,3,4,5); endchar;
-
- cmchar "Thin leftward arrow";
- beginevt("<");
- adjust_fit(0,0); pickup rule.nib;
- x1=lft x2=thick_rule_thickness; x3=w+hmeet_adj;
- y1=y2=y3=math_axis;
- draw z2--z3; % stem
- pickup crisp.nib;
- z4=z1+(xarrowhead,yarrowhead);
- z5=z1+(xarrowhead,-yarrowhead);
- draw z1--z4; draw z1--z5; % arrowhead
- labels(1,2,3,4,5); endchar;
-
- cmchar "Thin upward arrow";
- beginevt("^");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=x3=good.x .5w;
- y1=top y2=h-thick_rule_thickness; y3=-d-vmeet_adj;
- draw z2--z3; % stem
- pickup crisp.nib;
- z4=z1+(xarrowhead,-yarrowhead);
- z5=z1+(-xarrowhead,-yarrowhead);
- draw z1--z4; draw z1--z5; % arrowhead
- labels(1,2,3,4,5); endchar;
-
- cmchar "Thin downward arrow";
- beginevt("V");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=x3=good.x .5w;
- y1=bot y2=-d+thick_rule_thickness; y3=h+vmeet_adj;
- draw z2--z3; % stem
- pickup crisp.nib;
- z4=z1+(xarrowhead,yarrowhead);
- z5=z1+(-xarrowhead,yarrowhead);
- draw z1--z4; draw z1--z5; % arrowhead
- labels(1,2,3,4,5); endchar;
-
- cmchar "Thick rightward arrow";
- beginevt("]");
- adjust_fit(0,0); pickup fine.nib;
- x1=x5=0-hmeet_adj; rt x3=x6=w-thick_rule_thickness;
- rt x2=rt x4=(w-thick_rule_thickness)-(thick_rule_thickness);
- top y1=top y2=math_axis+thick_rule_thickness;
- bot y5=bot y4=math_axis-thick_rule_thickness;
- y3=y6=math_axis;
- filldraw z1--z2--z3--z4--z5--cycle; % stem
- pickup crisp.nib;
- z7=z6+(-xarrowhead,yarrowhead);
- z8=z6+(-xarrowhead,-yarrowhead);
- draw z6--z7; draw z6--z8; % arrowhead
- labels(1,2,3,4,5,6,7,8); endchar;
-
- cmchar "Hollow rightward arrow";
- beginevt("!");
- adjust_fit(0,0); pickup crisp.nib;
- x1=x5=0-hmeet_adj; x6=w-thick_rule_thickness;
- x2=x4=(w-thick_rule_thickness)-(thick_rule_thickness);
- top y1=top y2=math_axis + thick_rule_thickness;
- bot y5=bot y4=math_axis - thick_rule_thickness;
- y6=math_axis;
- draw z1--z2; % stem
- draw z5--z4;
- z7=z6+(-xarrowhead,yarrowhead);
- z8=z6+(-xarrowhead,-yarrowhead);
- draw z6--z7; draw z6--z8; % arrowhead
- labels(1,2,3,4,5,7,8); endchar;
-
- cmchar "Dashed rightward arrow";
- beginevt(")");
- adjust_fit(0,0); pickup rule.nib;
- y1=y2=y3=y5=math_axis;
- numeric t; t=w/4+hmeet_adj;
- x1=0; x2=t; x3=2t;
- x5=w-thick_rule_thickness;
- drawdot z1; drawdot z2; drawdot z3; % stem
- pickup crisp.nib;
- z6=z5+(-xarrowhead,yarrowhead);
- z7=z5+(-xarrowhead,-yarrowhead);
- draw z5--z6; draw z5--z7; % arrowhead
- labels(1,2,3,5,6,7); endchar;
-
- cmchar "Dashed leftward arrow";
- beginevt("(");
- adjust_fit(0,0); pickup rule.nib;
- y1=y3=y4=y5=math_axis;
- numeric t; t=w/4+hmeet_adj;
- numeric b; b=thick_rule_thickness;
- x1=b; x3=b+t; x4=b+2t; x5=b+3t;
- drawdot z3; drawdot z4; drawdot z5; % stem
- pickup crisp.nib;
- z6=z1+(xarrowhead,yarrowhead);
- z7=z1+(xarrowhead,-yarrowhead);
- draw z1--z6; draw z1--z7; % arrowhead
- labels(1,3,4,5,6,7); endchar;
-
- cmchar "Dashed upward arrow";
- beginevt("~");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=x3=x4=x6=good.x .5w;
- numeric t; t=(h+d+2vmeet_adj)/7;
- numeric b; b=-d-vmeet_adj;
- y1=b; y2=b+t; y3=b+2t; y4=b+3t;
- y6=h-thick_rule_thickness;
- drawdot z1; drawdot z2; drawdot z3; drawdot z4; % stem
- pickup crisp.nib;
- z7=z6+(xarrowhead,-yarrowhead);
- z8=z6+(-xarrowhead,-yarrowhead);
- draw z6--z7; draw z6--z8; % arrowhead
- labels(1,2,3,4,6,7,8); endchar;
-
- cmchar "Dashed downward arrow";
- beginevt("v");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=x3=x4=x6=good.x .5w;
- numeric t; t=(h+d+2vmeet_adj)/7;
- numeric b; b=-d-vmeet_adj;
- y1=b+3t; y2=b+4t; y3=b+5t; y4=b+6t;
- y6=-d+thick_rule_thickness;
- drawdot z1; drawdot z2; drawdot z3; drawdot z4; % stem
- pickup crisp.nib;
- z7=z6+(xarrowhead,yarrowhead);
- z8=z6+(-xarrowhead,yarrowhead);
- draw z6--z7; draw z6--z8; % arrowhead
- labels(1,2,3,4,6,7,8); endchar;
-
- %%%%%%%%%%
- % Elbows %
- %%%%%%%%%%
-
- cmchar "Thin upper-left elbow";
- beginevt("q");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=good.x .5w; x3=w+hmeet_adj;
- y1=-d-vmeet_adj; y2=y3=good.y math_axis;
- draw z1--z2--z3;
- labels(1,2,3); endchar;
-
- cmchar "Thin upper-right elbow";
- beginevt("w");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=(good.x .5w) - crisp; x3=0-hmeet_adj;
- y1=-d-vmeet_adj; y2=y3=math_axis;
- draw z1--z2--z3;
- labels(1,2,3); endchar;
-
- cmchar "Thin lower-left elbow";
- beginevt("a");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=good.x .5w; x3=w+hmeet_adj;
- y1=h+vmeet_adj; y2=y3=math_axis;
- draw z1--z2--z3;
- labels(1,2,3); endchar;
-
- cmchar "Thin lower-right elbow";
- beginevt("s");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=(good.x .5w) - crisp; x3=0-hmeet_adj;
- y1=h+vmeet_adj; y2=y3=math_axis;
- draw z1--z2--z3;
- labels(1,2,3); endchar;
-
- cmchar "Thin upper-left elbow meeting dashed";
- beginevt("I");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=good.x .5w; x3=w+hmeet_adj;
- y1=-d-vmeet_adj; y2=y3=math_axis;
- draw z1--z2--z3; % elbow
- x5=x6=x7=x8=good.x .5w;
- numeric t; t=(h+d+2vmeet_adj)/8;
- numeric b; b=-d-vmeet_adj;
- y5=b+4t; y6=b+5t; y7=b+6t; y8=b+7t;
- drawdot z5; drawdot z6; drawdot z7; drawdot z8;
- labels(1,2,3,5,6,7,8); endchar;
-
- cmchar "Thick upper-left elbow";
- beginevt("Q");
- adjust_fit(0,0); pickup fine.nib;
- lft x1=lft x2=.5w-thick_rule_thickness;
- rt x5=rt x6=.5w+thick_rule_thickness;
- x3=x4=w+hmeet_adj;
- y1=y6=-d-vmeet_adj;
- bot y4=bot y5=math_axis-thick_rule_thickness;
- top y2=top y3=math_axis+thick_rule_thickness;
- filldraw z1--z2--z3--z4--z5--z6--cycle;
- labels(1,2,3,4,5,6); endchar;
-
- cmchar "Thick upper-right elbow";
- beginevt("W");
- adjust_fit(0,0); pickup fine.nib;
- rt x1=rt x2=(good.x .5w) + thick_rule_thickness;
- lft x5=lft x6=(good.x .5w) - thick_rule_thickness;
- x3=x4=0-hmeet_adj;
- y1=y6=-d-vmeet_adj;
- bot y4=bot y5=math_axis - thick_rule_thickness;
- top y2=top y3=math_axis + thick_rule_thickness;
- filldraw z1--z2--z3--z4--z5--z6--cycle;
- labels(1,2,3,4,5,6); endchar;
-
- cmchar "Thick lower-left elbow";
- beginevt("A");
- adjust_fit(0,0); pickup fine.nib;
- lft x1=lft x2=(good.x .5w) - thick_rule_thickness;
- rt x5=rt x6=(good.x .5w) + thick_rule_thickness;
- x3=x4=w+hmeet_adj;
- y1=y6=h+vmeet_adj;
- top y4=top y5=math_axis + thick_rule_thickness;
- bot y2=bot y3=math_axis - thick_rule_thickness;
- filldraw z1--z2--z3--z4--z5--z6--cycle;
- labels(1,2,3,4,5,6); endchar;
-
- cmchar "Thick lower-right elbow";
- beginevt("S");
- adjust_fit(0,0); pickup fine.nib;
- rt x1=rt x2=(good.x .5w) + thick_rule_thickness;
- lft x5=lft x6=(good.x .5w) - thick_rule_thickness;
- x3=x4=0-hmeet_adj;
- y1=y6=h+vmeet_adj;
- top y4=top y5=math_axis + thick_rule_thickness;
- bot y2=bot y3=math_axis - thick_rule_thickness;
- filldraw z6--z5--z4--z3--z2--z1--cycle;
- labels(1,2,3,4,5,6); endchar;
-
- cmchar "Thick upper-left elbow meeting thin";
- beginevt("T");
- adjust_fit(0,0); pickup fine.nib;
- lft x1=lft x2=(good.x .5w) - thick_rule_thickness;
- rt x5=rt x6=(good.x .5w) + thick_rule_thickness;
- x3=x4=w+hmeet_adj;
- y1=y6=-d-vmeet_adj;
- bot y4=bot y5=math_axis - thick_rule_thickness;
- top y2=top y3=math_axis + thick_rule_thickness;
- filldraw z6--z5--z4--z3--z2--z1--cycle; % elbow
- pickup rule.nib;
- x7=x8=good.x .5w;
- bot y7=math_axis; y8=h+vmeet_adj;
- draw z7--z8;
- labels(1,2,3,4,5,6,7,8); endchar;
-
- cmchar "Hollow upper-left elbow";
- beginevt("E");
- adjust_fit(0,0); pickup crisp.nib;
- lft x1=lft x2=(good.x .5w) - thick_rule_thickness;
- rt x5=rt x6=(good.x .5w) + thick_rule_thickness;
- x3=x4=w+hmeet_adj;
- y1=y6=-d-vmeet_adj;
- bot y4=bot y5=math_axis - thick_rule_thickness;
- top y2=top y3=math_axis + thick_rule_thickness;
- draw z1--z2--z3;
- draw z4--z5--z6;
- labels(1,2,3,4,5,6); endchar;
-
- cmchar "Hollow upper-right elbow";
- beginevt("R");
- adjust_fit(0,0); pickup crisp.nib;
- rt x1=rt x2=(good.x .5w) + thick_rule_thickness;
- lft x5=lft x6=(good.x .5w) - thick_rule_thickness;
- x3=x4=0-hmeet_adj;
- y1=y6=-d-vmeet_adj;
- bot y4=bot y5=math_axis - thick_rule_thickness;
- top y2=top y3=math_axis + thick_rule_thickness;
- draw z1--z2--z3;
- draw z4--z5--z6;
- labels(1,2,3,4,5,6); endchar;
-
- cmchar "Hollow lower-left elbow";
- beginevt("D");
- adjust_fit(0,0); pickup crisp.nib;
- lft x1=lft x2=(good.x .5w) - thick_rule_thickness;
- rt x5=rt x6=(good.x .5w) + thick_rule_thickness;
- x3=x4=w+hmeet_adj;
- y1=y6=h+vmeet_adj;
- top y4=top y5=math_axis + thick_rule_thickness;
- bot y2=bot y3=math_axis - thick_rule_thickness;
- draw z1--z2--z3;
- draw z4--z5--z6;
- labels(1,2,3,4,5,6); endchar;
-
- cmchar "Hollow lower-right elbow";
- beginevt("F");
- adjust_fit(0,0); pickup crisp.nib;
- rt x1=rt x2=(good.x .5w) + thick_rule_thickness;
- lft x5=lft x6=(good.x .5w) - thick_rule_thickness;
- x3=x4=0-hmeet_adj;
- y1=y6=h+vmeet_adj;
- top y4=top y5=math_axis + thick_rule_thickness;
- bot y2=bot y3=math_axis - thick_rule_thickness;
- draw z1--z2--z3;
- draw z4--z5--z6;
- labels(1,2,3,4,5,6); endchar;
-
- cmchar "Hollow upper-left elbow meeting thin";
- beginevt("t");
- adjust_fit(0,0); pickup crisp.nib;
- lft x1=lft x2=(good.x .5w) - thick_rule_thickness;
- rt x5=rt x6=(good.x .5w) + thick_rule_thickness;
- x3=x4=w+hmeet_adj;
- y1=y6=-d-vmeet_adj;
- bot y4=bot y5=math_axis - thick_rule_thickness;
- top y2=top y3=math_axis + thick_rule_thickness;
- draw z1--z2--z3;
- draw z4--z5--z6; % elbow
- x7=x8=good.x .5w;
- y7=math_axis + thick_rule_thickness; y8=h+vmeet_adj;
- draw z7--z8;
- labels(1,2,3,4,5,6,7,8); endchar;
-
- cmchar "Dashed upper-left elbow";
- beginevt("e");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=x3=x4=good.x .5w;
- numeric t; t=(h+d+2vmeet_adj)/7;
- numeric b; b=-d-vmeet_adj;
- y1=b; y2=b+t; y3=b+2t; y4=b+3t;
- y6=y7=math_axis;
- numeric s; s=w/4+hmeet_adj;
- x6=2s; x7=3s;
- drawdot z1; drawdot z2; drawdot z3;
- drawdot z4; drawdot z6; drawdot z7;
- labels(1,2,3,4,6,7); endchar;
-
- cmchar "Dashed upper-right elbow";
- beginevt("r");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=x3=x4=good.x .5w;
- numeric t; t=(h+d+2vmeet_adj)/7;
- numeric b; b=-d-vmeet_adj;
- y1=b; y2=b+t; y3=b+2t; y4=b+3t;
- y7=y8=math_axis;
- numeric s; s=w/4+hmeet_adj;
- x7=s; x8=0;
- drawdot z1; drawdot z2; drawdot z3; drawdot z4;
- drawdot z7; drawdot z8;
- labels(1,2,3,4,7,8); endchar;
-
- cmchar "Dashed lower-left elbow";
- beginevt("d");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=good.x .5w;
- numeric t; t=(h+d+2vmeet_adj)/7;
- numeric b; b=-d-vmeet_adj;
- y1=b+5t; y2=b+6t;
- y5=y6=math_axis;
- numeric s; s=w/4+hmeet_adj;
- x5=2s; x6=3s;
- drawdot z1; drawdot z2;
- drawdot z5; drawdot z6;
- labels(1,2,5,6); endchar;
-
- cmchar "Dashed lower-right elbow";
- beginevt("f");
- adjust_fit(0,0); pickup rule.nib;
- x1=x2=good.x .5w;
- numeric t; t=(h+d+2vmeet_adj)/7;
- numeric b; b=-d-vmeet_adj;
- y1=b+5t; y2=b+6t;
- y5=y6=math_axis;
- numeric s; s=w/4+hmeet_adj;
- x5=s; x6=0;
- drawdot z1; drawdot z2;
- drawdot z5; drawdot z6;
- labels(1,2,5,6); endchar;
-
- %%%%%%%%%
- % Space %
- %%%%%%%%%
-
- cmchar "Space";
- beginevt(" ");
- endchar;
-